package com.qcby.util;

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class Generator {
    public void generator() throws Exception {
        //创建警告信息列表，用于存储在后续执行MyBatis逆向工程中产生的警告信息
        List<String> warnings = new ArrayList<String>();

        //如果目标位置已经存在相同点文件，是否要覆盖文件，true表示覆盖
        boolean overwrite = true;

        /**指向逆向工程配置文件  相对路径*/
        File configFile = new File("cinema_core/src/main/resources/generatorConfig.xml");

        /**解析配置文件
         * 内部会读取配置文件的内容，并按照 MyBatis 逆向工程配置文件的语法规则和格式来解析其中的各项设置。
         */
        ConfigurationParser parser = new ConfigurationParser(warnings);
        Configuration config = parser.parseConfiguration(configFile);

        //创建回调对象，会根据传入的overwrite值，在后续代码生成的过程中决定对于已存在文件的处理方式
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);

        //创建并执行MyBatis Generator对象
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,
                callback, warnings);
        myBatisGenerator.generate(null);//启动代码生成过程
    }

    public static void main(String[] args) throws Exception {
        try {
            Generator generatorSqlmap = new Generator();
            generatorSqlmap.generator();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
